diff -rc WindowMaker-0.52.0.ori/WPrefs.app/Appearance.c WindowMaker-0.52.0/WPrefs.app/Appearance.c
*** WindowMaker-0.52.0.ori/WPrefs.app/Appearance.c	Mon Mar 22 12:16:49 1999
--- WindowMaker-0.52.0/WPrefs.app/Appearance.c	Wed Apr 21 08:24:11 1999
***************
*** 1286,1315 ****
  
      setupTextureFor(panel->texLs, "FTitleBack", "(solid, black)", 
  		    "[Focused]", i);
!     panel->textureIndex[i] = i++;
  
      setupTextureFor(panel->texLs, "UTitleBack", "(solid, gray)", 
  		    "[Unfocused]", i);
!     panel->textureIndex[i] = i++;
  
      setupTextureFor(panel->texLs, "PTitleBack", "(solid, \"#616161\")",
  		    "[Owner of Focused]", i);
!     panel->textureIndex[i] = i++;
  
      setupTextureFor(panel->texLs, "MenuTitleBack", "(solid, black)", 
  		    "[Menu Title]", i);
!     panel->textureIndex[i] = i++;
  
      setupTextureFor(panel->texLs, "MenuTextBack", "(solid, gray)", 
  		    "[Menu Item]", i);
!     panel->textureIndex[i] = i++;
  
      setupTextureFor(panel->texLs, "IconBack", "(solid, gray)", "[Icon]", i);
!     panel->textureIndex[i] = i++;
  /*
      setupTextureFor(panel->texLs, "WorkspaceBack", "(solid, black)", 
  		    "[Workspace]", i);
!     panel->textureIndex[i] = i++;
   */
  
      updatePreviewBox(panel, EVERYTHING);
--- 1286,1315 ----
  
      setupTextureFor(panel->texLs, "FTitleBack", "(solid, black)", 
  		    "[Focused]", i);
!     panel->textureIndex[i++] = i;
  
      setupTextureFor(panel->texLs, "UTitleBack", "(solid, gray)", 
  		    "[Unfocused]", i);
!     panel->textureIndex[i++] = i;
  
      setupTextureFor(panel->texLs, "PTitleBack", "(solid, \"#616161\")",
  		    "[Owner of Focused]", i);
!     panel->textureIndex[i++] = i;
  
      setupTextureFor(panel->texLs, "MenuTitleBack", "(solid, black)", 
  		    "[Menu Title]", i);
!     panel->textureIndex[i++] = i;
  
      setupTextureFor(panel->texLs, "MenuTextBack", "(solid, gray)", 
  		    "[Menu Item]", i);
!     panel->textureIndex[i++] = i;
  
      setupTextureFor(panel->texLs, "IconBack", "(solid, gray)", "[Icon]", i);
!     panel->textureIndex[i++] = i;
  /*
      setupTextureFor(panel->texLs, "WorkspaceBack", "(solid, black)", 
  		    "[Workspace]", i);
!     panel->textureIndex[i++] = i;
   */
  
      updatePreviewBox(panel, EVERYTHING);
diff -rc WindowMaker-0.52.0.ori/WPrefs.app/Expert.c WindowMaker-0.52.0/WPrefs.app/Expert.c
*** WindowMaker-0.52.0.ori/WPrefs.app/Expert.c	Thu Mar 18 17:39:22 1999
--- WindowMaker-0.52.0/WPrefs.app/Expert.c	Thu Apr 15 09:02:54 1999
***************
*** 31,37 ****
      
      WMWindow *win;
  
!     WMButton *swi[5];
  
  } _Panel;
  
--- 31,37 ----
      
      WMWindow *win;
  
!     WMButton *swi[6];
  
  } _Panel;
  
***************
*** 50,55 ****
--- 50,56 ----
      WMSetButtonSelected(panel->swi[2], GetBoolForKey("SaveSessionOnExit"));
      WMSetButtonSelected(panel->swi[3], GetBoolForKey("UseSaveUnders"));
      WMSetButtonSelected(panel->swi[4], GetBoolForKey("DisableBlinking"));
+     WMSetButtonSelected(panel->swi[5], GetBoolForKey("SingleClickLaunch"));
  }
  
  
***************
*** 63,69 ****
      WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
      WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
  
!     for (i=0; i<5; i++) {
  	panel->swi[i] = WMCreateSwitchButton(panel->frame);
  	WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25);
  	WMMoveWidget(panel->swi[i], 20, 20+i*25);
--- 64,70 ----
      WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
      WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
  
!     for (i=0; i<6; i++) {
  	panel->swi[i] = WMCreateSwitchButton(panel->frame);
  	WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25);
  	WMMoveWidget(panel->swi[i], 20, 20+i*25);
***************
*** 74,79 ****
--- 75,81 ----
      WMSetButtonText(panel->swi[2], _("Automatically save session when exiting WindowMaker"));
      WMSetButtonText(panel->swi[3], _("Use SaveUnder in window frames, icons, menus and other objects"));
      WMSetButtonText(panel->swi[4], _("Disable cycling color highlighting of icons."));
+     WMSetButtonText(panel->swi[5], _("Launch applications and restore windows with a single click"));
  
      WMRealizeWidget(panel->frame);
      WMMapSubwidgets(panel->frame);
***************
*** 94,99 ****
--- 96,102 ----
      SetBoolForKey(WMGetButtonSelected(panel->swi[2]), "SaveSessionOnExit");
      SetBoolForKey(WMGetButtonSelected(panel->swi[3]), "UseSaveUnders");
      SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DisableBlinking");
+     SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "SingleClickLaunch");
  }
  
  
diff -rc WindowMaker-0.52.0.ori/src/WindowMaker.h WindowMaker-0.52.0/src/WindowMaker.h
*** WindowMaker-0.52.0.ori/src/WindowMaker.h	Mon Mar 22 12:16:50 1999
--- WindowMaker-0.52.0/src/WindowMaker.h	Wed Apr 14 10:35:40 1999
***************
*** 348,353 ****
--- 348,356 ----
      /* shading animation */
      char shade_speed;
  
+ 	/* single click to lauch applications */
+ 	char single_click;
+ 
      int edge_resistance;
  
      struct {
diff -rc WindowMaker-0.52.0.ori/src/appicon.c WindowMaker-0.52.0/src/appicon.c
*** WindowMaker-0.52.0.ori/src/appicon.c	Thu Apr  1 12:33:57 1999
--- WindowMaker-0.52.0/src/appicon.c	Wed Apr 14 10:38:03 1999
***************
*** 710,715 ****
--- 710,716 ----
      int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0;
      int ix, iy;
      int clickButton = event->xbutton.button;
+ 	Bool hasMoved;
      Pixmap ghost = None;
  
      if (aicon->editing || WCHECK_STATE(WSTATE_MODAL))
***************
*** 758,763 ****
--- 759,765 ----
        dockable = canBeDocked(icon->owner);
  
  
+ 	hasMoved = False;
      while (!done) {
  	WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask
  		    |ButtonMotionMask|ExposureMask, &ev);
***************
*** 767,772 ****
--- 769,775 ----
  	    break;
  
  	 case MotionNotify:
+ 		hasMoved = True;
  	    if (!grabbed) {
  		if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
  		    || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
***************
*** 917,922 ****
--- 920,928 ----
  		XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel);
  	    }
  	    done = 1;
+ 		if (!hasMoved && wPreferences.single_click) {
+ 			iconDblClick(desc, event);
+ 		}
  	    break;
  	}
      }
diff -rc WindowMaker-0.52.0.ori/src/defaults.c WindowMaker-0.52.0/src/defaults.c
*** WindowMaker-0.52.0.ori/src/defaults.c	Mon Mar 22 12:16:51 1999
--- WindowMaker-0.52.0/src/defaults.c	Wed Apr 14 10:54:24 1999
***************
*** 445,450 ****
--- 445,453 ----
      {"DisableBlinking",	"NO",		NULL,
  	   &wPreferences.dont_blink,	getBool,	NULL
      },
+ 	{"SingleClickLaunch", "NO",		NULL,
+ 	   &wPreferences.single_click,	getBool,	NULL
+ 	},
  #ifdef WEENDOZE_CYCLE
      {"WindozeCycling","NO", NULL,
  	    &wPreferences.windoze_cycling,	getBool, NULL
diff -rc WindowMaker-0.52.0.ori/src/dock.c WindowMaker-0.52.0/src/dock.c
*** WindowMaker-0.52.0.ori/src/dock.c	Mon Mar 22 12:16:51 1999
--- WindowMaker-0.52.0/src/dock.c	Wed Apr 14 10:37:30 1999
***************
*** 3484,3490 ****
  
  
  
! static void
  handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
  {
      WScreen *scr = dock->screen_ptr;
--- 3484,3490 ----
  
  
  
! static int
  handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
  {
      WScreen *scr = dock->screen_ptr;
***************
*** 3499,3507 ****
      int ix = aicon->xindex, iy = aicon->yindex;
      int tmp;
      Pixmap ghost = None;
!     Bool docked;
      int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
  
      if (wPreferences.flags.noupdates)
  	return;
      
--- 3499,3508 ----
      int ix = aicon->xindex, iy = aicon->yindex;
      int tmp;
      Pixmap ghost = None;
!     Bool docked, hasMoved;
      int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
  
+ 	hasMoved = False;
      if (wPreferences.flags.noupdates)
  	return;
      
***************
*** 3551,3556 ****
--- 3552,3558 ----
  	    break;
  
  	 case MotionNotify:
+ 		hasMoved = True;
  	    if (!grabbed) {
  		if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD
  		    || abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) {
***************
*** 3690,3696 ****
  #ifdef DEBUG
  	    puts("End icon move");
  #endif
! 	    return;
  	}
      }
  }
--- 3692,3701 ----
  #ifdef DEBUG
  	    puts("End icon move");
  #endif
! 		if (!hasMoved) {
! 			return 1;
! 		}
! 	    return 0;
  	}
      }
  }
***************
*** 3807,3813 ****
  	XUnmapWindow(dpy, scr->clip_balloon);
  	scr->flags.clip_balloon_mapped = 0;
      }
!     
  #ifdef DEBUG
      puts("handling dock");
  #endif
--- 3812,3818 ----
  	XUnmapWindow(dpy, scr->clip_balloon);
  	scr->flags.clip_balloon_mapped = 0;
      }
!  
  #ifdef DEBUG
      puts("handling dock");
  #endif
***************
*** 3830,3836 ****
              else
                  handleDockMove(dock, aicon, event);
          } else
! 	    handleIconMove(dock, aicon, event);
  	
      } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
                 aicon->xindex==0 && aicon->yindex==0) {
--- 3835,3843 ----
              else
                  handleDockMove(dock, aicon, event);
          } else
! 	    if (handleIconMove(dock, aicon, event) != 0 &&
! 				wPreferences.single_click)
!             iconDblClick(desc, event);
  	
      } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
                 aicon->xindex==0 && aicon->yindex==0) {
diff -rc WindowMaker-0.52.0.ori/src/icon.c WindowMaker-0.52.0/src/icon.c
*** WindowMaker-0.52.0.ori/src/icon.c	Thu Mar 18 17:39:39 1999
--- WindowMaker-0.52.0/src/icon.c	Wed Apr 14 10:37:02 1999
***************
*** 809,814 ****
--- 809,815 ----
      int dx=event->xbutton.x, dy=event->xbutton.y;
      int grabbed=0;
      int clickButton=event->xbutton.button;
+ 	Bool hasMoved;
  
      if (WCHECK_STATE(WSTATE_MODAL))
  	return;
***************
*** 851,856 ****
--- 852,858 ----
  	wwarning("pointer grab failed for icon move");
  #endif
      }
+ 	hasMoved = False;
      while(1) {
  	WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask
  		   |ButtonMotionMask|ExposureMask, &ev);
***************
*** 860,865 ****
--- 862,868 ----
  	    break;
  
  	 case MotionNotify:
+ 		hasMoved = True;
  	    if (!grabbed) {
  		if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
  		    || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
***************
*** 897,902 ****
--- 900,908 ----
  
  	    if (wPreferences.auto_arrange_icons)
  		wArrangeIcons(wwin->screen_ptr, True);
+ 		if (!hasMoved && wPreferences.single_click) {
+ 			miniwindowDblClick(desc, event);
+ 		}
  	    return;
  	    
  	}
